package com.itheima.wisdomnext.service;

import com.itheima.wisdomnext.entity.Topic;
import java.util.List;

/**
 * 话题（Topic）服务接口，定义话题管理的核心业务逻辑
 */
public interface TopicService {

    /**
     * 获取指定话题及其关联的帖子
     *
     * @param tid 话题 ID
     * @param userId 当前用户 ID（可选，用于获取用户特定信息）
     * @return 返回包含帖子信息的指定话题对象
     */
    Topic getTopicWithPosts(Integer tid, Long userId);

    /**
     * 创建一个新的话题
     *
     * @param topic 需要创建的话题对象，包含名称、描述、创建者等信息
     */
    void createTopic(Topic topic);

    /**
     * 获取所有话题列表
     *
     * @return 返回所有话题的列表
     */
    List<Topic> getAllTopics();

    /**
     * 根据话题 ID 查询话题信息
     *
     * @param id 话题的唯一 ID
     * @return 返回指定话题对象（包含该话题下的帖子列表）
     */
    Topic getTopicById(Integer id);

    /**
     * 更新话题信息
     *
     * @param topic 需要更新的话题对象，包含修改后的内容
     */
    void updateTopic(Topic topic);

    /**
     * 根据话题 ID 删除指定话题
     *
     * @param id 需要删除的话题的 ID
     */
    void deleteTopic(Integer id);

    /**
     * 审核话题（通过/拒绝）
     *
     * @param id 需要审核的话题 ID
     */
    void approveTopic(Integer id);
}
